iT邦幫忙

0

[不做怎麼知道系列之Android開發者的30天後端養成故事 Day20] - 怎麼選擇雲端資料庫? #GCP #relational #nosql

Sam 2020-02-29 00:00:237511 瀏覽
  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20200228/20124548KA6B3YKWnd.png

哈囉,我們又見面了,昨天我們走過一次 從開發到雲端部署的一條龍,可是我們用的資料庫是 SQLite,不用架伺服器(Serverless)的輕量關聯式資料庫,如果遇到規模稍大一點的專案,SQLite 肯定是扛不住,所以我們就來看看,怎麼把資料庫放到雲端,讓我們 看下去。

有哪些廠商提供雲端資料庫 (Cloud Database) ?

根據 The Best Database-as-a-Service Solutions for 2020 | PCMag 提到六間廠商,有 MicrosoftMongoDBAmazonGoogleIBMSAP,都是大廠商佔據了前面,剛開始可以從其中最有名的三家: MicrosoftAmazonGoogle 比較它們的服務方案,可以參考 雲端平台大比拼:GOOGLE VS. AMAZON VS. MICROSOFT | CloudMile,這篇針對三家大廠商的收費、運算力、整合性進行比較。

https://images.pexels.com/photos/325229/pexels-photo-325229.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260

Photo by Manuel Geissinger from Pexels

選擇這些資料庫的要素有哪些 ?

以下評估的基準,是根據我在學習後端所觀察到的現象 和 跟朋友聊到的一些結果,之後隨著我對後端理解加深,再進一步完整這篇,或者是各位有些不一樣的想法,也可以提出來一起討論,提供給大家更完整的資訊。

Google 提供的雲端平台叫作 Google Cloud Platform,簡稱 GCP
Amazon 提供的雲端平台叫作 Amazon Web Service,簡稱 AWS
Microsoft 提供的雲端平台叫作 Microsoft Azure,簡稱 Azure

專案規模/需求

先評估專案的需求和規模可能會到哪一個層級,可參考的指標有

  • 每小時/日/月平均流量

    可以從 平均流量 來預估長期的支出

  • 同時使用人數 (最大同時連線)

    不同的方案,會有 最大同時連線 的數量限制

  • 專案讀、寫資料的比例

    依此決定要用 關聯式(Relational) 或 非關聯式(NoSQL) 的資料庫,各家廠商對於 NoSQL 的支援不一,像 MongoDB Atlas 就只有 NoSQL

    就 我 和 工作室大神 聊天所得出的結論:

    • 如果讀寫各半(e.g. 即時對戰遊戲、聊天室、直播),可考慮用 NoSQL
    • 如果讀 >> 寫(e.g. 電商網站),可考慮用 Relational
    • 也有一種是混合式,RelationalNoSQL 都使用,根據不同的資料讀寫特性來決定資料要放的資料庫類型
  • 總資料量

    可以從 預估的總資料量 來決定你要選的方案,如果你用超過當下方案的儲存量,像 GCP(Google Cloud Platform) 會貼心地幫你升級到下一個級距

  • 資料的成長性、變動性

    可以從 資料變動性 來決定所使用的資料庫類型,如果你預期資料的欄位可能很常變動,那麼 NoSQL 可能更適合這種資料,因為 Relational 變更欄位是很麻煩的事,可以參考我在 Day15 比較 Relational vs. NoSQL 時的舉例

各服務所提供的功能

  • 最基本的 RelationalNoSQL 的支持
  • 有無 ACID(Atomicity, Consistency, Isolation, Durability),可以理解為 保證存取資料的正確性
  • 跨服務間的整合,像 GCP 服務間的整合就很不錯
  • 資料搬遷的方便性
  • 有無 Serverless 的架構

速度

  • 網路速度 (這最基本的條件,各大廠商應該差不多)

  • 硬碟速度

    通常可以選擇 SSDHDD 兩種,但既然都選擇雲端方案了,不用考慮 HDD 可以資料救援的優點,因為雲端方案的資料保證,做得比我們自己架的還要更好,所以就直接選存取速度快的 SSD

  • 存取延遲

    也就是上面所提到的,依照資料的 讀寫比例,來決定要使用 Relational 或 NoSQL,Relational 對頻繁讀取、複雜讀取是比較優秀的,相對地,NoSQL 的頻繁寫入就相對優秀。

價格

各家廠商對於各項服務的計費方式都不太一樣,有些服務是根據 使用時間 來算錢,這種通常會有各個等級的,有些根據 運算力 來算錢,選擇方案之前,需要把眼睛放亮點,還要事先根據專案架構,預算出日後的支出,再來決定要使用哪個平台,這其中的排列組合已經多到無法算清楚了,需要一些踩雷的經驗,才會慢慢知道各方案的好壞吧,歡迎各位留言分享踩雷的經驗 XD

單日心得總結

其實,今天原本要寫的主題是「Django + GAE + MongoDB Atlas 」,可是,誰知道在我搞了一兩個小時之後,才發現 Atlas 的免費方案,並不支援 GCP ...,所以今天主題就改成比較雲端方案哈哈,也是趁這個機會,才瞭解到怎麼選資料庫方案,但沒有實際踩雷的經驗,還是很難寫出每個平台、服務、方案的優缺點,日後有機會多踩幾次雷再來補充~
https://ithelp.ithome.com.tw/upload/images/20200229/201245483zfIAa1wVn.png

在我離職後,對於國定假日就沒有那麼有感覺了,之前還有在上班的時候,會很期待假日的到來,希望在假日好好的休息,但通常什麼事都沒做,也沒感覺到有怎樣休息到,假日就過去了,頂多只是多睡幾個小時;現在反而就覺得持續學習、持續輸出比較好玩,對於 假日 的感覺就沒那麼強烈,但心理還是會想要 休息,這種休息是那種想要今天工作半天,另外半天來看場電影、運動,或者探索另一個有趣的主題,而不是想要什麼都不做的那種休息。

我是 RS,這是我的 不做怎麼知道系列 文章,我們 明天見。


https://ithelp.ithome.com.tw/upload/images/20200219/20124548meDsnCPamL.png


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言